// ==UserScript== // @name Time Zone Converter(时区转换) // @namespace http://tampermonkey.net/ // @version 1.0 // @description Display current time and convert to different time zones with customizable time differences. // @author xiaolaji // @match *://*/* // @grant none // ==/UserScript== (function() { 'use strict'; // Function to get the current time function getCurrentTime() { return new Date(); } // Function to convert time to a different time zone function convertToTimeZone(time, hoursDifference) { var newTime = new Date(time.getTime() + (hoursDifference * 60 * 60 * 1000)); return newTime; } // Function to display the time on the webpage function displayTime() { var currentTime = getCurrentTime(); var timeZones = JSON.parse(localStorage.getItem('timeZones')) || []; var timeString = ''; timeString += '
'; timeString += '
▼ All Time Zones
'; timeString += '
'; timeString += '
Current Time: ' + currentTime.toLocaleString() + '
'; for (var i = 0; i < timeZones.length; i++) { var timeZone = timeZones[i].timeZone; var hoursDifference = timeZones[i].hoursDifference; var timeZoneTime = convertToTimeZone(currentTime, hoursDifference); timeString += '
' + timeZone + ': ' + timeZoneTime.toLocaleString() + '
'; } timeString += '
'; timeString += '
'; document.body.insertAdjacentHTML('beforeend', timeString); } // Function to add a new time zone function addTimeZone() { var timeZone = prompt('Enter the time zone:'); var hoursDifference = parseInt(prompt('Enter the time difference in hours:')); if (timeZone && !isNaN(hoursDifference)) { var timeZones = JSON.parse(localStorage.getItem('timeZones')) || []; timeZones.push({ timeZone: timeZone, hoursDifference: hoursDifference }); localStorage.setItem('timeZones', JSON.stringify(timeZones)); } } // Function to display the time in all added time zones function displayAllTimeZones() { var timeZones = JSON.parse(localStorage.getItem('timeZones')) || []; var timeZonesElement = document.getElementById('time-zones'); if (!timeZonesElement) { timeZonesElement = document.createElement('div'); timeZonesElement.id = 'time-zones'; timeZonesElement.style.position = 'fixed'; timeZonesElement.style.top = '10px'; timeZonesElement.style.right = '10px'; timeZonesElement.style.padding = '10px'; timeZonesElement.style.backgroundColor = '#333'; timeZonesElement.style.color = '#fff'; timeZonesElement.style.fontFamily = 'Arial, sans-serif'; document.body.appendChild(timeZonesElement); } var html = ''; for (var i = 0; i < timeZones.length; i++) { var timeZone = timeZones[i].timeZone; var hoursDifference = timeZones[i].hoursDifference; var convertedTime = convertToTimeZone(getCurrentTime(), hoursDifference); html += '
' + timeZone + ': ' + convertedTime.toLocaleString() + '
'; } timeZonesElement.innerHTML = html; } // Call the displayTime function to start displaying the current time displayTime(); document.addEventListener('keydown', function(event) { if (event.ctrlKey && event.altKey && event.code === 'KeyQ') { addTimeZone(); } }); // Call the displayAllTimeZones function to start displaying the times in all added time zones // displayAllTimeZones(); // Add event listener to the add-time-zone button var addTimeZoneButton = document.getElementById('add-time-zone'); if (addTimeZoneButton) { addTimeZoneButton.addEventListener('click', addTimeZone); } })();